标签调度在C++中存在很久了，其用于STL的原始实现中(参见[StepanovLeeSTL])，并且经常与特征一起使用。SFINAE和EnableIf比较新:本书的第一版(参见[VandevoordeJosuttisTemplates1st])介绍了术语SFINAE，并用于检测成员类型的存在。

“enable if”技术和术语最早是由Jaakko Jarvi、Jeremiah Will-cock、Howard Hinnant和Andrew Lumsdaine在[OverloadingProperties]中提出的，描述了EnableIf模板，如何用EnableIf(和DisableIf)对实现函数重载，以及如何用类模板偏特化来使用EnableIf。从那时起，EnableIf和类似的技术在高级模板库(包括C++标准库)的实现中无处不在。此外，这些技术的流行激发了C++11扩展SFINAE的行为(参见15.7节)。Peter Dimov是第一个注意到函数模板的默认模板参数(另一个C++11特性)使得可以在构造函数模板中使用EnableIf，而无需引入另一个函数参数。

概念语言特性(附录E中描述)有望在C++17后的C++标准中出现，其可使许多涉及EnableIf的技术过时。与此同时，C++17的constexpr if语句(参见第8.5节和第20.3.3节)也在逐渐减少它们在现代模板库中的存在感。